﻿
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;



namespace WypożyczalniaV1
{
    public partial class Dodaj_Ksiazka : Form
    {
        public Dodaj_Ksiazka(string conf)
        {
            try
            {
                
                InitializeComponent();
                zap = new Zapytania(conf);
                conn = new MySqlConnection(conf);
                comboBox1.Items.Clear();
                wypelni_pola();
                button1.Visible = false;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private const string progrmist = "ex.ToString()";
        private int flagaPrzycisku;
        private MySqlConnection conn;
        private Zapytania zap;
        private void label1_Click(object sender, EventArgs e)
        {

        }
        #region Obsługa przycisków
        private void button2_Click(object sender, EventArgs e) //Dodaj i zamnknij  
        {
            try
            {
                if (walidacja() == true)
                {
                    flagaPrzycisku = 1;
                    DodajKsiazke();
                    MessageBox.Show("Dodano Książkę do bazy\nTeraz możesz dodaj Autora!\n");
                    button1.Visible = true;

                }
                else
                {
                    MessageBox.Show("Popraw błędne Pola");
                }
            
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private void button3_Click(object sender, EventArgs e) //Dodaj i powturz
        {
            try
            {
                if (walidacja() == true)
                {
                    flagaPrzycisku = 2;
                    DodajKsiazke();
                    MessageBox.Show("Dodano Książkę do bazy\nTeraz możesz dodaj Autora!\n");
                    button1.Visible = true;
                }
                else
                {
                    MessageBox.Show("Popraw błędne Pola");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            
            try
            {
                
                Item itm = (Item)comboBox1.SelectedItem;
                int idAutor = int.Parse(itm.id);
                string zapytanie = "SELECT idBooks FROM books WHERE ISBN='" + textBox5.Text + "'AND Tytul='" + textBox2.Text + "';";
                int idBooks = zap.identyfikator(zapytanie);
                MessageBox.Show(idBooks.ToString());
                int idBooks_1 = idBooks;
                zapytanie = null;
                zapytanie = "SELECT * FROM autorbooks WHERE idbooks='" + idBooks.ToString() + "' AND idAutorzy='" + idAutor + "';";

                if (zap.sprawdz(zapytanie) == false)
                {
                    if (radioButton1.Checked == true)
                    {
                        string query = "INSERT INTO AutorBooks (idBooks, idAutorzy)VALUES('" + idBooks + "','" + idAutor + "');";
                        zap.Dodaj_pozycje(query);
                        if (flagaPrzycisku == 1)
                        {
                            Gen_egzempalrz(idBooks_1);
                            this.Close();
                        }
                        if (flagaPrzycisku == 2)
                        {
                            Gen_egzempalrz(idBooks_1);
                            Clear();
                            wypelni_pola();
                        }
                    }
                    if (radioButton2.Checked == true)
                    {
                        DialogResult resultat = new DialogResult();
                        resultat = MessageBox.Show("Doddaj Kolejnego Autora", "Dodaj", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                        if (DialogResult.Yes == resultat)
                        {
                            string query = "INSERT INTO AutorBooks (idBooks, idAutorzy)VALUES('" + idBooks + "','" + idAutor + "');";
                            zap.Dodaj_pozycje(query);
                            comboBox1.Text = string.Empty;

                        }
                        if (DialogResult.No == resultat)
                        {
                            string query = "INSERT INTO AutorBooks (idBooks, idAutorzy)VALUES('" + idBooks + "','" + idAutor + "');";
                            zap.Dodaj_pozycje(query);
                            if (flagaPrzycisku == 1)
                            {
                                Gen_egzempalrz(idBooks_1);
                                this.Close();
                            }
                            if (flagaPrzycisku == 2)
                            {
                                Gen_egzempalrz(idBooks_1);
                                Clear();
                                wypelni_pola();
                            }
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Podana Książka już istnieje");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        #endregion
        #region Obsługa pól do wyboru
        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton1.Checked == true)
            {
               // button1.Visible = false;
            }
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            if (radioButton2.Checked == true)
            {
                //button1.Visible = true;
            }
        }
        #endregion
        #region wypelnienie combboxów
        public void wypelni_pola()
        {
            comboBox2.Items.Add("A4");
            comboBox2.Items.Add("B4");
            comboBox2.Items.Add("A5");
            comboBox3.Items.Add("Twarda");
            comboBox3.Items.Add("Mięka");
            Generowanie_Autor();
        }

        #endregion

        #region Generowanie autorów w combboxie
        public void Generowanie_Autor()
        {
            conn.Open();
            MySqlCommand cmd = new MySqlCommand("SELECT * FROM autorzy", conn);     
            MySqlDataReader read = cmd.ExecuteReader();
            while (read.Read())
            {
                comboBox1.Items.Add(new Item(read[1] + " " + read[2], read[0].ToString()));
                //comboBox1.Items.Add("Adam");
            }
            conn.Close();

        }

        #endregion
        #region Dodaj do bazy Książkę ale bez autora
        private void DodajKsiazke()
        {
            int wydanie;
            if (textBox4.Text == null)
            {
                wydanie = 1;
            }
            else
            {
                wydanie = int.Parse(textBox4.Text);
            }
            string query = "INSERT INTO books (Tytul, DataWydania, ISBN, Format, Stron, Opis, Wydanie, Oprawa)VALUES('" + textBox2.Text + "','" + maskedTextBox1.Text + "','" + textBox5.Text + "','" + comboBox2.SelectedItem + "','" + numericUpDown1.Value + "','" + textBox1.Text + "','" + wydanie + "','" + comboBox3.SelectedItem + "');";
            string query_sprawdzanie = "SELECT * FROM books where Tytul='" + textBox2.Text + "'AND DataWydania='" + maskedTextBox1.Text + "'AND ISBN='" + textBox5.Text + "'AND Format='" + comboBox2.SelectedItem + "'AND Wydanie='" + wydanie + "'AND Oprawa='" + comboBox3.SelectedItem + "';";
            if (zap.sprawdz(query_sprawdzanie) == false)
            {
                zap.Dodaj_pozycje(query);
                MessageBox.Show("Dodano nową pozycję do bazy", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("Podana książka już istnieje");
            }

        }
        #endregion
        #region Sprawdzanie Pól
        private bool walidacja()
        {
            bool flaga;
            if ( textBox2.Text == null || textBox5.Text == null)
            {
                flaga = false;
              //  textBox3.BackColor = Color.Red;
                textBox2.BackColor = Color.Red;
                textBox5.BackColor = Color.Red;
            }
            else
            {
                flaga = true;

            }
            return flaga;
        }
        #endregion
        #region Czyszczenie pól
        private void Clear()
        {
            textBox1.Clear();
            textBox2.Clear();
          //  textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
            textBox6.Clear();
            textBox7.Clear();
            comboBox1.Items.Clear();
            comboBox2.Items.Clear();
            comboBox3.Items.Clear();
        }
        #endregion
        #region Generowanie kodu ean8
        private string Gen_kodEan8()
        {
            string kodEan8 = zap.Ean8_egzemplarz();
            long part = long.Parse(kodEan8.Substring(0, 7));
            part++;
            string new_kodPart = part.ToString();
            //MessageBox.Show(new_kodPart);

            /*
             * Cześć kodu odpowiedzialna za wygenerowanie sumy kontrolnej 
             */

            int[] tab = { 3, 1, 3, 1, 3, 1, 3 };
            int suma = 0;
            string suma_kontrolna;
            for (int i = 0; i < 7; i++)
            {
                suma += int.Parse(new_kodPart[i].ToString()) * tab[i];
            }
            //MessageBox.Show(suma.ToString());

            suma %= 10;
            suma = 10 - suma;
            suma %= 10;
            suma_kontrolna = suma.ToString();
            //MessageBox.Show(suma_kontrolna);

            kodEan8 = null;
            kodEan8 = new_kodPart + suma_kontrolna;
            //MessageBox.Show(kodEan8);

            return kodEan8;
        }
        #endregion
        #region Generowanie egzemplarzy
        private void Gen_egzempalrz(int idBook)
        {
            int ile = (int)numericUpDown2.Value;
            string query;
            for (int i = 1; i <= ile; i++)
            {
                query = "INSERT INTO egzemplarz (KodEan8,idBooks,Dostep)VALUES('"+ Gen_kodEan8() + "','"+ idBook +"','"+ "Dostępna" +"');";
                zap.Dodaj_pozycje(query);
            }
        }
        #endregion

    }
    class Item
    {
        public string name { get; set; }
        public string id { get; set; }
        public Item(string nazwa, string identyfikator)
        {
            id = identyfikator;
            name = nazwa;
        }
        public override string ToString()
        {
            // Generates the text shown in the combo box
            return name;
        }
    }
}

